"""
@author: zwz
@file: 习题.py
@time: 2022/12/12 0012 19:11:18
"""

# 这是一个字符串排序，排序规则∶小写<大写<奇数<偶数.
# s = 'asdf234GDSdsf23’#排序:小写-大写-奇数-偶数·
# 原理:先比较元组的第一个值，FALSE
s = 'asdf234GDSdsf23'
print(sorted(s, key=lambda x:(x.isdigit(), x.isdigit() and int(x)%2==0, x.isupper(), x)))

#  匿名函数+reduce实现 1*2*3*...*n
from functools import reduce
n = 4
print(reduce(lambda x, y: x*y, range(1, n+1)))

#  filter函数:找出[1-100]能被3整除的数
print(list(filter(lambda x: x % 3 == 0, range(1, 101))))

#  map函数:求list[1-10]各项的平方
print(list(map(lambda x: x ** 2, range(1, 11))))

# 将列表[1,4,5,9] 转换成 '1459'的字符串
from functools import reduce
def fn(x, y):
    return x * 10 + y
print(reduce(fn, [1, 4, 5, 9]))


